// prototype 构建数据操作类
// var DBPost = function (){
//   this.storageKeyName = "postList";
// }
// DBPost.prototype = {
//     getAllPostData:function() {
//       var res = wx.getStorageSync(this.storageKeyName);
//       if (!res) {
//         res = require('../data/data.js').postLike;
//         this.execSetStorageSync(res);
//       }
//       return res;
//     },


//   execSetStorageSync:function(data) {
//     wx.setStorageSync(this.storageKeyName, data);
//   },

// };

// module.exports = {
//   DBPost:DBPost
// }

// 使用ES6改写DBPost
class DBPost {
  constructor(postId) {
    this.storageKeyName = "postList";
    this.postId = postId;
  }

  // 获取文章列表数据
  getAllPostData() {
    var res = wx.getStorageSync(this.storageKeyName);
    if (!res) {
      res = require('../data/data.js').postLike;
      this.execSetStorageSync(res);
    }
    return res;
  }

  //获取指定id号的文章数据
  getPostItemById() {
    var postData = this.getAllPostData();
    var len = postData.length;
    for (var i = 0; i < len; i++) {
      if (postData[i].postId == this.postId) {
        return {
          // 当前文章在缓存数据库中的序号
          index: i,
          data: postData[i]
        }
      }
    }
  }

  //获取指定id下的文章的评论数据

  getCommentData() {
    var itemData = this.getPostItemById().data;

    //按时间降序排列评论
    itemData.comments.sort(this.compareWithTime);
    var len = itemData.comments.length,
      comment;
    var util = require('../util/util.js');
    for (var i = 0; i < len; i++) {
      comment = itemData.comments[i];
      // 将评论中的时间转换为可阅读时间
      comment.create_time = util.getDiffTime(comment.create_time, true);
    }
    return itemData.comments;
  }

  //按时间降序排列评论
  compareWithTime(value1, value2) {
    var flag = parseFloat(value1.create_time) - parseFloat(value2.create_time);
    if (flag < 0) {
      return 1;
    } else if (flag > 0) {
      return -1;
    } else {
      return 0;
    }
  }

  //收藏文章
  collect() {
    return this.updatePostData('collect');
  }

  //点赞
  up() {
    return this.updatePostData('up');
  }

  // 更新本地的点赞 评论信息 收藏 阅读量
  updatePostData(category, newComment) {
    var itemData = this.getPostItemById(),
      postData = itemData.data,
      allPostData = this.getAllPostData();

    switch (category) {
      case 'collect':
        // 处理收藏
        if (!postData.collectionStatus) {
          //如果当前是未收藏状态
          postData.collectionNum++;
          postData.collectionStatus = true;
        } else {
          //如果当前是收藏状态
          postData.collectionNum--;
          postData.collectionStatus = false;
        }
        break;
      case 'up':
        // 处理点赞
        if (!postData.upStatus) {
          //如果当前是未收藏状态
          postData.upNum++;
          postData.upStatus = true;
        } else {
          //如果当前是收藏状态
          postData.upNum--;
          postData.upStatus = false;
        }
        break;
      case 'comment':
        postData.comments.push(newComment);
        postData.commentNum++;
        break;
      case 'reading':
        postData.readingNum++;
        
        break;
      default:
        break;
    }
    //更新缓存数据库
    allPostData[itemData.index] = postData;
    this.execSetStorageSync(allPostData);
    return postData;
  }


  // 发表评论
  newComment(newComment) {
    this.updatePostData('comment', newComment);
  }

  // 计算当前文章的阅读次数
  addReadingTimes() {
    this.updatePostData('reading');
  }

  // 执行缓存
  execSetStorageSync(data) {
    wx.setStorageSync(this.storageKeyName, data);
  }

};

export {
  DBPost
}